Labour market


Labour force
ARXSTK2_raw <- 
  statgl_url("ARXSTK2", lang = language) |> 
  statgl_fetch(
    aar       = px_top(),
    udd_grp   = c("AA", "10", "20", "30", "40", "50"),
    opg_var   = px_all(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

ARXSTK2 <-
  ARXSTK2_raw %>% 
  mutate(
    udd_grp = udd_grp %>% factor(levels = unique(udd_grp)),
    opg_var = opg_var %>% fct_rev()
  ) %>% 
  spread(udd_grp, value)


ARXSTK2 %>% 
  select(-aar) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = ARXSTK2[["aar"]] %>% table()) |> 
  row_spec(1, bold = T)
Total Primary Upper secondary education - General Upper secondary education - Vocational: Total Post-secondary non-tertiary education Bachelors, Masters, Doctoral or equivalent level
2024
Unemployment in average per month 963 803 23 121 3 13
Total population 37.054 19.864 2.266 9.172 519 5.233
Persons not in the labour force in average per month 8.075 5.990 573 1.114 84 314
Labour force in average per month 28.979 13.874 1.692 8.058 435 4.919
Employment in average per month 28.015 13.071 1.669 7.937 432 4.906


See the table in our Statbank: ARXSTK2

Jobseekers


ARXLED2_raw <- 
  statgl_url("ARXLED2", lang = language) %>%
  statgl_fetch(
    aar       = px_top(2),
    md        = px_all(),
    koen      = 3,
    type_k    = "A",
    alderskat = px_all(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

ARXLED2 <- 
  ARXLED2_raw %>% 
  filter(aar <= Sys.time() %>% year() - 1) %>% 
  mutate(
    alderskat = alderskat %>% factor(levels = unique(alderskat)),
    md = md %>% factor(levels = unique(md))
  ) %>% 
  spread(md, value) %>% 
  unite(combi, type_k, koen, sep = ", ")

ARXLED2 %>% 
  select(-c(aar, combi)) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = ARXLED2[["aar"]] %>% table())
January February March April May June July August September October November December
2024
18-19 86 78 73 67 68 68 69 54 43 60 70 96
20-24 200 193 184 200 173 150 137 126 115 142 178 207
25-29 200 181 182 185 169 157 158 145 126 146 179 220
30-34 219 189 184 203 187 170 157 160 126 153 176 217
35-39 193 160 171 175 147 132 115 131 109 131 147 187
40-44 173 148 139 147 146 121 114 110 114 137 153 160
45-49 123 104 95 115 101 95 84 85 77 96 107 120
50-54 160 113 123 131 116 99 98 92 90 107 125 147
55-59 261 209 189 214 192 164 154 134 138 166 210 240
60+ 208 147 150 166 176 158 144 141 133 175 209 219
2025
18-19 130 109 108 105 102 88 89 58 48 51 65 77
20-24 263 246 231 230 220 208 188 139 107 122 165 209
25-29 260 238 234 230 219 189 168 133 117 134 170 190
30-34 256 240 235 221 198 176 167 152 130 159 182 192
35-39 224 208 223 218 181 164 138 117 131 137 164 185
40-44 207 189 193 188 163 135 133 105 98 127 143 158
45-49 147 129 123 135 127 129 122 104 107 118 130 142
50-54 166 144 131 146 129 121 103 88 83 86 104 114
55-59 264 226 237 253 238 222 200 168 176 176 187 193
60+ 242 236 235 236 204 199 199 182 189 213 216 240


See the table in our Statbank: ARXLED2

ARXLEDVAR_raw <- 
  statgl_url("ARXLEDVAR", lang = language) %>% 
  statgl_fetch(
    koen      = 0,
    Alderskat = "A",
    opg_var   = px_all(),
    taar_kvar = px_top(1),
    kvar_led  = px_all(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

ARXLEDVAR <- 
  ARXLEDVAR_raw %>% 
  unite(combi, Alderskat, koen, sep = ", ") %>% 
  mutate(
    kvar_led = kvar_led %>% fct_inorder(),
    opg_var = opg_var %>% fct_inorder()
  ) %>% 
  spread(opg_var, value)

ARXLEDVAR %>% 
  select(-c(combi, taar_kvar)) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = ARXLEDVAR[["taar_kvar"]] %>% table()) %>% 
  row_spec(1, bold = TRUE)
Number of persons Percentage
2025Q4
Total 4.525 100,0
1-3 months 2.352 52,0
4-6 months 1.035 22,9
7-9 months 606 13,4
10-12 months 532 11,8


See the table in our Statbank: ARXSTK1

Employment
url <- paste0("https://bank.stat.gl/api/v1/", language, "/Greenland/AR/AR30/ARXBFB01.px")

ARXBFB1_raw <- 
  #url |> 
  statgl_url("ARXBFB01", lang = language) |> 
  statgl_fetch(
    aar       = px_top(),
    beskbrch  = px_all(),
    sex       = "A",
    opg_var   = "G",
    bybygd    = px_all(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

ARXBFB1 <- 
  ARXBFB1_raw %>% 
  arrange(-value) %>% 
  mutate(
    beskbrch = beskbrch %>% fct_inorder(),
    bybygd = bybygd %>% fct_inorder()
  ) %>% 
  spread(bybygd, value) %>% 
  unite(combi, opg_var, aar, sep = ", ")

ARXBFB1 %>% 
  select(-c(combi, sex)) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = ARXBFB1[["combi"]] %>% table()) %>% 
  row_spec(1, bold = TRUE) 
Total Towns Settlements etc.
Number of main employed persons in average per month, 2024
All industries 29.232 25.902 3.331
Public administration and service 12.836 11.603 1.233
Social protection (COFOG 10) 5.073 4.667 406
Fishing and other related industries 4.326 3.169 1.157
Wholesale and retail trade 3.114 2.743 371
Education (COFOG 9) 2.500 2.196 303
Family and children (COFOG 10.40) 2.466 2.246 220
Construction 2.185 2.131 55
Transportation and storage 2.068 1.892 176
Primary education (COFOG 9.10) 1.573 1.275 298
Social protection other (COFOG 10.x) 1.352 1.303 49
Health (COFOG 7) 1.304 1.226 78
Old age (COFOG 10.20) 1.256 1.118 138
General public services (COFOG 1) 1.234 1.110 125
Accommodation and food service activities 922 847 75
Other (COFOG x) 854 783 71
Unknown 787 746 41
Youth-level education (COFOG 9.20) 630 626 4
Economic affairs (COFOG 4) 616 500 116
Information and communication 532 527 6
Public order and safety (COFOG 3) 529 505 24
Administrative and support service activities 469 403 66
Energy and watersupply 431 335 96
Recreation, culture and religion (COFOG 8) 364 318 46
Other service industries 315 314 1
Financial and insurance activities 305 299 6
Education other (COFOG 9.x) 297 296 2
Professional, scientific and technical activities 282 281 1
Environmental protection (COFOG 5) 269 221 49
Real estate activities 256 253 2
Manufacturing 227 221 6
Mining and quarrying 93 84 9
Agriculture, forestry and related industries 85 54 31
Defence (COFOG 2) 63 47 15
Housing and community amenities (COFOG 6) 30 30 NA


See the table in our Statbank: ARXBFB01

Unemployment
url <- paste0("https://bank.stat.gl/api/v1/", language, "/Greenland/AR/AR40/ARXLED6.px")

ARXLED6_raw <- 
  statgl_url("ARXLED6", lang = language) |> 
  statgl_fetch(
    aar       = px_top(5),
    udd_grp   = px_all(),
    opg_var   = "P",
    .col_code = TRUE
  ) %>% 
  as_tibble()

ARXLED6_raw %>% 
  mutate(
    udd_grp = udd_grp %>% fct_inorder(),
    aar = aar %>% fct_inorder()
  ) %>% 
  spread(aar, value) %>%
  select(-opg_var) |> 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  row_spec(1, bold = TRUE) |> 
  add_footnote(ARXLED6_raw[[3]][1], notation = "symbol")
2020 2021 2022 2023 2024
Total 4,5 3,7 3,2 3,0 3,3
Primary 7,5 6,2 5,5 5,1 5,8
Upper secondary education - General 1,4 0,9 0,9 1,1 1,4
Upper secondary education - Vocational: Total 2,3 1,8 1,5 1,4 1,5
Upper secondary education - Vocational: Arts and humanities 3,6 2,9 2,0 0,7 1,8
Upper secondary education - Vocational: Business, administration and law 1,9 1,5 1,3 0,9 1,1
Upper secondary education - Vocational: Engineering, manufacturing and construction 1,9 1,6 1,6 1,4 1,3
Upper secondary education - Vocational: Agriculture, forestry, fisheries and veterinary 6,5 5,2 4,0 3,4 3,6
Upper secondary education - Vocational: Health and welfare 1,7 1,4 1,1 1,0 1,2
Upper secondary education - Vocational: Services 3,2 2,1 1,8 1,9 2,3
Upper secondary education - Vocational: Other 1,6 0,7 0,3 0,5 0,8
Post-secondary non-tertiary education 0,9 0,6 0,4 0,2 0,7
Bachelors, Masters, Doctoral or equivalent level 0,4 0,3 0,4 0,4 0,3
* Unemployment rate (pct.)


See the table in our Statbank: ARXLED7


Last updated: 15. januar 2026
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBGQUxTRSwNCgl3YXJuaW5nID0gRkFMU0UsDQoJY2xhc3Mub3V0cHV0ID0gInNjcm9sbC0xMDAiDQopDQoNCmxpYnJhcnkoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KCJzdGF0Z2wiKQ0KbGlicmFyeSgia2FibGVFeHRyYSIpDQpsaWJyYXJ5KCJsdWJyaWRhdGUiKQ0KbGlicmFyeSgieWFtbCIpDQoNCmxhbmd1YWdlICA8LSBwYXJhbXMkbGFuZw0Kb3B0aW9uICAgIDwtIHBhc3RlMCgiP2xhbmc9IiwgbGFuZ3VhZ2UsICImc2VsZWN0IikNCmxvZ28gICAgICA8LSBwYXN0ZTAoZ2V0d2QoKSwiL2FkZC9sb2dvLmdpZiIpDQp0eHQgICAgICAgPC0gcmVhZF95YW1sKHBhc3RlMChnZXR3ZCgpLCAiL2FkZC90eHQueW1sIiksIGZpbGVFbmNvZGluZyA9ICJJU08tODg1OS0xIikNCnNvdXJjZSAgICA8LSB0eHQkc291cmNlW2xhbmd1YWdlXSAlPiUgdW5saXN0KCkNCg0KeGFyaW5nYW5FeHRyYTo6dXNlX2NsaXBib2FyZCgpDQoNCmBgYA0KDQpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9DQoNCi5hY2NvcmRpb24gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTE5OTAwOw0KICBjb2xvcjogd2hpdGU7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgcGFkZGluZzogMThweDsNCiAgd2lkdGg6IDEwMCU7DQogIGJvcmRlcjogbm9uZTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICB0ZXh0LWFsaWduOiBsZWZ0Ow0KICBvdXRsaW5lOiBub25lOw0KICBmb250LXNpemU6IDE1cHg7DQogIHRyYW5zaXRpb246IDAuNHM7DQp9DQoNCi5hY3RpdmUsIC5hY2NvcmRpb246aG92ZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjk3MjQyOw0KfQ0KDQouYWNjb3JkaW9uOmFmdGVyIHsNCiAgY29udGVudDogJ1wwMDJCJzsNCiAgY29sb3I6ICM3Nzc7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmbG9hdDogcmlnaHQ7DQogIG1hcmdpbi1sZWZ0OiA1cHg7DQp9DQoNCi5hY3RpdmU6YWZ0ZXIgew0KICBjb250ZW50OiAiXDIyMTIiOw0KfQ0KDQoucGFuZWwgew0KICBwYWRkaW5nOiAwcHggNXB4IDBweCA1cHg7DQogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOw0KICBtYXgtaGVpZ2h0OiAwOw0KICBvdmVyZmxvdzogaGlkZGVuOw0KICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMnMgZWFzZS1vdXQ7DQp9DQoNCmRldGFpbHMgew0KICB3aWR0aDogMTAwJTsNCn0NCg0KZGV0YWlscyA+IHN1bW1hcnkgew0KICBwYWRkaW5nOiA0cHggMTJweDsNCiAgd2lkdGg6IDEwMCU7DQogIGJhY2tncm91bmQtY29sb3I6ICMwMDdmOTk7DQogIGJvcmRlcjogc29saWQ7DQogIGJvcmRlci1jb2xvcjogd2hpdGU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBmb250LXNpemU6IDE1cHg7DQogIGNvbG9yOiB3aGl0ZTsNCn0NCg0KZGV0YWlsc1tvcGVuXSA+IHN1bW1hcnkgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFhNDFhOw0KfQ0KDQoNCi50aXRsZSB7DQogIGNvbG9yOiAjMWI1NDYzOw0KICBmb250LXNpemU6IDM2cHg7DQp9DQoNCg0KLnBlcnNvbmVyIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICMwMDQ0NTk7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDAuMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLsO4a29ub21pIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICMwMDdGOTk7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDFweDsNCiAgcGFkZGluZy1ib3R0b206IDAuMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLnR2w6ZyZ8OlZW5kZSB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjZmFhNDFhOw0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAwLjFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi5jb250YWluZXIgew0KICB3aWR0aDogaW5oZXJpdDsNCn0NCg0KLnNjcm9sbC0xMDAgew0KICBtYXgtaGVpZ2h0OiAxMDA7DQogIG92ZXJmbG93LXk6IGF1dG87DQogIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7DQp9DQoNCg0KcHJlIHsNCiAgbWF4LWhlaWdodDogMzAwcHg7DQogIG92ZXJmbG93LXk6IGF1dG87DQp9DQoNCnByZVtjbGFzc10gew0KICBtYXgtaGVpZ2h0OiAzMDBweDsNCn0NCg0KYGBgDQoNCjxicj4NCjxicj4NCg0KPGNlbnRlcj4NCg0KLS0tDQogDQojIFtgciB0eHQkQVIkdGl0bGVbbGFuZ3VhZ2VdYF17LnRpdGxlfQ0KIA0KLS0tDQo8L2NlbnRlcj4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkQVIkc3ViMVtsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMTogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJBUlhTVEsyIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgQVJYU1RLMn0NCg0KQVJYU1RLMl9yYXcgPC0gDQogIHN0YXRnbF91cmwoIkFSWFNUSzIiLCBsYW5nID0gbGFuZ3VhZ2UpIHw+IA0KICBzdGF0Z2xfZmV0Y2goDQogICAgYWFyICAgICAgID0gcHhfdG9wKCksDQogICAgdWRkX2dycCAgID0gYygiQUEiLCAiMTAiLCAiMjAiLCAiMzAiLCAiNDAiLCAiNTAiKSwNCiAgICBvcGdfdmFyICAgPSBweF9hbGwoKSwNCiAgICAuY29sX2NvZGUgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KDQpBUlhTVEsyIDwtDQogIEFSWFNUSzJfcmF3ICU+JSANCiAgbXV0YXRlKA0KICAgIHVkZF9ncnAgPSB1ZGRfZ3JwICU+JSBmYWN0b3IobGV2ZWxzID0gdW5pcXVlKHVkZF9ncnApKSwNCiAgICBvcGdfdmFyID0gb3BnX3ZhciAlPiUgZmN0X3JldigpDQogICkgJT4lIA0KICBzcHJlYWQodWRkX2dycCwgdmFsdWUpDQoNCg0KQVJYU1RLMiAlPiUgDQogIHNlbGVjdCgtYWFyKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcGFja19yb3dzKGluZGV4ID0gQVJYU1RLMltbImFhciJdXSAlPiUgdGFibGUoKSkgfD4gDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUKQ0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIkFSWFNUSzIiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxL2MzOWRiNmIyLTkzY2QtNDY2OS04ZmFkLWRhZDE2ZDhhMGVhMSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQo8L2RldGFpbHM+DQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JEFSJHN1YjJbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+DQo8YnI+DQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAyOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIkFSWExFRDIiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBBUlhMRUQyfQ0KDQpBUlhMRUQyX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiQVJYTEVEMiIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lDQogIHN0YXRnbF9mZXRjaCgNCiAgICBhYXIgICAgICAgPSBweF90b3AoMiksDQogICAgbWQgICAgICAgID0gcHhfYWxsKCksDQogICAga29lbiAgICAgID0gMywNCiAgICB0eXBlX2sgICAgPSAiQSIsDQogICAgYWxkZXJza2F0ID0gcHhfYWxsKCksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KQVJYTEVEMiA8LSANCiAgQVJYTEVEMl9yYXcgJT4lIA0KICBmaWx0ZXIoYWFyIDw9IFN5cy50aW1lKCkgJT4lIHllYXIoKSAtIDEpICU+JSANCiAgbXV0YXRlKA0KICAgIGFsZGVyc2thdCA9IGFsZGVyc2thdCAlPiUgZmFjdG9yKGxldmVscyA9IHVuaXF1ZShhbGRlcnNrYXQpKSwNCiAgICBtZCA9IG1kICU+JSBmYWN0b3IobGV2ZWxzID0gdW5pcXVlKG1kKSkNCiAgKSAlPiUgDQogIHNwcmVhZChtZCwgdmFsdWUpICU+JSANCiAgdW5pdGUoY29tYmksIHR5cGVfaywga29lbiwgc2VwID0gIiwgIikNCg0KQVJYTEVEMiAlPiUgDQogIHNlbGVjdCgtYyhhYXIsIGNvbWJpKSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IEFSWExFRDJbWyJhYXIiXV0gJT4lIHRhYmxlKCkpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiQVJYTEVEMiIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvOGRjMmMyMWQtODNjMy00NjlmLWE3YTEtOWVhYTNmOWUxOTkxIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMzogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJBUlhMRURWQVIiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBBUlhMRURWQVJ9DQoNCkFSWExFRFZBUl9yYXcgPC0gDQogIHN0YXRnbF91cmwoIkFSWExFRFZBUiIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAga29lbiAgICAgID0gMCwNCiAgICBBbGRlcnNrYXQgPSAiQSIsDQogICAgb3BnX3ZhciAgID0gcHhfYWxsKCksDQogICAgdGFhcl9rdmFyID0gcHhfdG9wKDEpLA0KICAgIGt2YXJfbGVkICA9IHB4X2FsbCgpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCkFSWExFRFZBUiA8LSANCiAgQVJYTEVEVkFSX3JhdyAlPiUgDQogIHVuaXRlKGNvbWJpLCBBbGRlcnNrYXQsIGtvZW4sIHNlcCA9ICIsICIpICU+JSANCiAgbXV0YXRlKA0KICAgIGt2YXJfbGVkID0ga3Zhcl9sZWQgJT4lIGZjdF9pbm9yZGVyKCksDQogICAgb3BnX3ZhciA9IG9wZ192YXIgJT4lIGZjdF9pbm9yZGVyKCkNCiAgKSAlPiUgDQogIHNwcmVhZChvcGdfdmFyLCB2YWx1ZSkNCg0KQVJYTEVEVkFSICU+JSANCiAgc2VsZWN0KC1jKGNvbWJpLCB0YWFyX2t2YXIpKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcGFja19yb3dzKGluZGV4ID0gQVJYTEVEVkFSW1sidGFhcl9rdmFyIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKQ0KDQoNCg0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIkFSWFNUSzEiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzc1MjQ0YTQ5LWZjMjktNGNiYS05NDFhLTkwZWU0NjYzYWM0NyIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQo8L2RldGFpbHM+DQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JEFSJHN1YjNbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+IA0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgJypUYWJlbCA0Oioge3N0YXRnbF9tZXRhKGdsdWU6OmdsdWUoImh0dHBzOi8vYmFuay5zdGF0LmdsL2FwaS92MS97bGFuZ3VhZ2V9L0dyZWVubGFuZC9BUi9BUjMwL0FSWEJGQjAxLnB4IikpIHw+IHBsdWNrKCJ0aXRsZSIpfScgfD4gZ2x1ZTo6Z2x1ZSgpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgQVJYQkZCMDF9DQoNCnVybCA8LSBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsL2FwaS92MS8iLCBsYW5ndWFnZSwgIi9HcmVlbmxhbmQvQVIvQVIzMC9BUlhCRkIwMS5weCIpDQoNCkFSWEJGQjFfcmF3IDwtIA0KICAjdXJsIHw+IA0KICBzdGF0Z2xfdXJsKCJBUlhCRkIwMSIsIGxhbmcgPSBsYW5ndWFnZSkgfD4gDQogIHN0YXRnbF9mZXRjaCgNCiAgICBhYXIgICAgICAgPSBweF90b3AoKSwNCiAgICBiZXNrYnJjaCAgPSBweF9hbGwoKSwNCiAgICBzZXggICAgICAgPSAiQSIsDQogICAgb3BnX3ZhciAgID0gIkciLA0KICAgIGJ5YnlnZCAgICA9IHB4X2FsbCgpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCkFSWEJGQjEgPC0gDQogIEFSWEJGQjFfcmF3ICU+JSANCiAgYXJyYW5nZSgtdmFsdWUpICU+JSANCiAgbXV0YXRlKA0KICAgIGJlc2ticmNoID0gYmVza2JyY2ggJT4lIGZjdF9pbm9yZGVyKCksDQogICAgYnlieWdkID0gYnlieWdkICU+JSBmY3RfaW5vcmRlcigpDQogICkgJT4lIA0KICBzcHJlYWQoYnlieWdkLCB2YWx1ZSkgJT4lIA0KICB1bml0ZShjb21iaSwgb3BnX3ZhciwgYWFyLCBzZXAgPSAiLCAiKQ0KDQpBUlhCRkIxICU+JSANCiAgc2VsZWN0KC1jKGNvbWJpLCBzZXgpKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcGFja19yb3dzKGluZGV4ID0gQVJYQkZCMVtbImNvbWJpIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKSANCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJBUlhCRkIwMSIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvMDFhZjU5MzQtZTlhYi00ZTcxLTkwZWEtNWYwODBjMTRiYWMyIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4gDQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JEFSJHN1YjRbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+DQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgNTogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJBUlhMRUQ2IiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgQVJYTEVENn0NCg0KdXJsIDwtIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2wvYXBpL3YxLyIsIGxhbmd1YWdlLCAiL0dyZWVubGFuZC9BUi9BUjQwL0FSWExFRDYucHgiKQ0KDQpBUlhMRUQ2X3JhdyA8LSANCiAgc3RhdGdsX3VybCgiQVJYTEVENiIsIGxhbmcgPSBsYW5ndWFnZSkgfD4gDQogIHN0YXRnbF9mZXRjaCgNCiAgICBhYXIgICAgICAgPSBweF90b3AoNSksDQogICAgdWRkX2dycCAgID0gcHhfYWxsKCksDQogICAgb3BnX3ZhciAgID0gIlAiLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCkFSWExFRDZfcmF3ICU+JSANCiAgbXV0YXRlKA0KICAgIHVkZF9ncnAgPSB1ZGRfZ3JwICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIGFhciA9IGFhciAlPiUgZmN0X2lub3JkZXIoKQ0KICApICU+JSANCiAgc3ByZWFkKGFhciwgdmFsdWUpICU+JQ0KICBzZWxlY3QoLW9wZ192YXIpIHw+IA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKSB8PiANCiAgYWRkX2Zvb3Rub3RlKEFSWExFRDZfcmF3W1szXV1bMV0sIG5vdGF0aW9uID0gInN5bWJvbCIpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiQVJYTEVENyIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvZmNhOWEzMjYtZDYwZS00OWE3LTgwY2EtZGI0MWUxNzdiZGUyIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4gDQoNCg0KDQo8aHIgc3R5bGU9ImJvcmRlcjoxcHggcmlkZ2UgbGlnaHRncmF5Ij4gPC9ocj4NCjxjZW50ZXI+IDxzcGFuIHN0eWxlPSdjb2xvcjojRDNEM0QzOyBmb250LXNpemU6OTAlOyc+IGByIHBhc3RlKHR4dCR1cGRhdGVbbGFuZ3VhZ2VdLCBmb3JtYXQoU3lzLkRhdGUoKSwgIiVkLiAlQiAlWSIpKWAgPC9zcGFuPiA8L2NlbnRlcj4NCg0KDQoNCg0KPHNjcmlwdD4NCnZhciBhY2MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhY2NvcmRpb24iKTsNCnZhciBpOw0KDQpmb3IgKGkgPSAwOyBpIDwgYWNjLmxlbmd0aDsgaSsrKSB7DQogIGFjY1tpXS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgew0KICAgIHRoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7DQogICAgdmFyIHBhbmVsID0gdGhpcy5uZXh0RWxlbWVudFNpYmxpbmc7DQogICAgaWYgKHBhbmVsLnN0eWxlLm1heEhlaWdodCkgew0KICAgICAgcGFuZWwuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsNCiAgICB9IGVsc2Ugew0KICAgICAgcGFuZWwuc3R5bGUubWF4SGVpZ2h0ID0gcGFuZWwuc2Nyb2xsSGVpZ2h0ICsgInB4IjsNCiAgICB9IA0KICB9KTsNCn0NCjwvc2NyaXB0Pg0KDQoNCg==